package com.funsport.service;

/**
 * 积分奖励服务接口
 *
 * @author Fun-Sport Team
 */
public interface IPointRewardService {
    
    /**
     * 活动签到奖励积分
     * - 参与一次活动：15分
     * - 活动超2个小时：20分
     *
     * @param userId  用户ID
     * @param eventId 活动ID
     */
    void rewardForEventCheckIn(Long userId, Long eventId);
    
    /**
     * 发布帖子奖励积分
     * - 第一次发布帖子：10分
     * - 后续发布：0分
     *
     * @param userId 用户ID
     * @param postId 帖子ID
     */
    void rewardForPostPublish(Long userId, Long postId);
    
    /**
     * 帖子被点赞奖励积分
     * - 每次被点赞：3分
     *
     * @param postOwnerId 帖子作者ID
     * @param postId      帖子ID
     * @param likerId     点赞人ID
     */
    void rewardForPostLike(Long postOwnerId, Long postId, Long likerId);
    
    /**
     * 帖子被收藏奖励积分
     * - 每次被收藏：3分
     *
     * @param postOwnerId  帖子作者ID
     * @param postId       帖子ID
     * @param collectorId  收藏人ID
     */
    void rewardForPostFavorite(Long postOwnerId, Long postId, Long collectorId);
    
    /**
     * 帖子被回复奖励积分
     * - 每次被回复：3分
     *
     * @param postOwnerId 帖子作者ID
     * @param postId      帖子ID
     * @param commentId   评论ID
     */
    void rewardForPostComment(Long postOwnerId, Long postId, Long commentId);
}

